import random
import datetime
import pandas as pd

# ===== 配置部分 =====
records_per_type = 5000          # 每个 type 的记录数
start_datetime = datetime.datetime(2024, 1, 1, 0, 0, 0)  # 起始时间 00:00

# 4 个设备：2 个用电设备，2 个储能设备
devices = [
    {"deviceid": 1, "category": 1, "name_prefix": "用电设备1"},
    {"deviceid": 2, "category": 1, "name_prefix": "用电设备2"},
    {"deviceid": 3, "category": 2, "name_prefix": "储能设备1"},
    {"deviceid": 4, "category": 2, "name_prefix": "储能设备2"},
]

# ===== 生成数据 =====
rows = []

for dev in devices:
    for t in [1, 2, 3]:  # type 1:电量 2:电价 3:负荷
        for i in range(records_per_type):
            ts = start_datetime + datetime.timedelta(minutes=15 * i)

            # 根据 type 和 category 生成不同的 value、unit、name
            if t == 1:  # 电量
                # 用电设备电量大一些，储能小一些（只是示意）
                base = 50 if dev["category"] == 1 else 20
                value = round(random.uniform(base * 0.5, base * 1.5), 2)
                unit = "kWh"
                name = f"{dev['name_prefix']}-电量"
            elif t == 2:  # 电价
                # 电价随机在 0.3~1.2 元/kWh 之间（示意）
                value = round(random.uniform(0.3, 1.2), 4)
                unit = "元/kWh"
                name = f"{dev['name_prefix']}-电价"
            else:  # t == 3 负荷
                base_kw = 300 if dev["category"] == 1 else 100
                value = round(random.uniform(base_kw * 0.5, base_kw * 1.5), 2)
                unit = "kW"
                name = f"{dev['name_prefix']}-负荷"

            row = {
                "id": len(rows) + 1,           # 简单自增 ID
                "category": dev["category"],   # 1 用电 2 储能
                "type": t,                     # 1 电量 2 电价 3 负荷
                "create_time": ts,             # 00:00 开始，每 15 分钟
                "create_by": "system",         # 模拟创建人
                "remark": "",                  # 备注先留空
                "name": name,
                "value": value,
                "unit": unit,
                "datetime": ts,                # 和 create_time 一样
                "deviceid": dev["deviceid"],
            }

            rows.append(row)

# ===== 生成 DataFrame / 导出 CSV =====
df = pd.DataFrame(rows)

# 保存为 CSV，之后可以用 MySQL 的 LOAD DATA 或其他方式导入
df.to_csv("data_predict_mock.csv", index=False, encoding="utf-8-sig")

print("生成完成，共行数：", len(df))
print(df.head())